In typical lighting and light communication applications, a current driver is employed to control current flow through a diode, such as a Light Emitting Diode (LED). In one example, a remote control includes a microcontroller, the current driver, the LED, and a battery that supplies a Direct Current (DC) voltage onto a supply node. One terminal of the LED is coupled to the supply node and another terminal of the LED is coupled in some fashion to the current driver. During operation, the current driver controls an output current that flows through the LED, either by sourcing current from the battery, through the current driver, through the LED and onto a ground node, or by sinking current from the supply node, through the LED, through the current driver, and onto the ground node. Often, the current driver uses a reference current to set a current level of the output current through the LED. The current level of the output current is generally desired to be maintained at a pre-determined multiple of the reference current.
As current flows through the LED, the battery discharges. Discharging and charging of the battery causes the battery voltage to change over time. In addition, different applications require different battery voltages. Variation in the battery voltage often causes an output voltage between a terminal of the LED and the ground node to vary. The output voltage variation can vary significantly over time due to the charging and discharging of the battery or depending on the voltage and current demands involved in different applications. This variation in the output voltage tends to cause undesirable changes in the current level of the output current flowing through the LED. A solution that overcomes these shortcomings is desirable.